﻿using System;

namespace Zo.MessageQueues
{
    /// <summary>
    /// 消息接收者。
    /// </summary>
    public interface IMessageConsumer : IDisposable
    {
        /// <summary>
        /// 监听的路由 Key。
        /// </summary>
        /// <remarks>
        /// 即：接收消息的 KEY。
        /// </remarks>
        /// <param name="routingKey">路由 Key。</param>
        void SetRoutingKey(string routingKey);

        /// <summary>
        /// 设置是否自动应答。
        /// </summary>
        /// <param name="autoAck">是否自动应答（True：自动应答）。</param>
        void SetAutoAck(bool autoAck);

        /// <summary>
        /// 消息接收事件。
        /// </summary>
        event EventHandler<MessageContext> OnMessageReceived;

        /// <summary>
        /// 监听。
        /// </summary>
        void Listen();
    }
}